prose.sh posts downloader

J’ai fait un tout petit programme pour télécharger tous les posts en format Markdown d’un utilisateur, c’est disponible ici si ça t’intéresse.

Pourquoi ?

Quand j’ai découvert ce site, j’ai posté un “hello-word” pour tester, puis j’ai sans faire exprès supprimé le dossier de tous mes posts (j’en avais 2). Je me suis donc demandé si c’était possible de tous les télécharger d’un coup sans passer par l’interface SSH.

J’ai essayé d’abord avec scp, vu que c’est l’outil qui permet de poster des nouvelles choses. Malheureusement impossible.

Douteux de savoir si je faisais bien les choses (après tout, ce n’est pas comme si j’utilise scp tous les jours), j’ouvre un ticket dans le ticket tracker de pico.sh et l’auteur du projet me propose deux choses :

Vous vous doutez, j’ai choisi la deuxième proposition, sinon je ne serais pas en train d’écrire ce post.

Comment ?

J’ai décidé de le faire en Rust, parce que pourquoi pas.

J’ai commencé avec l’interface Cli en utilisant clap.

Ensuite, j’ai cherché à obtenir la liste de tous les posts à télécharger, pour ça, je “scanne” la page index d’un compte, là où il y a, justement, la liste de tous les posts. Cette étape est excessivement simple vu qu’il n’y a pas de page. Pour le parsing j’utilise scraper. Et hop ! En une trentaine de lignes, j’ai ma liste de posts.

Maintenant pour les télécharger, j’ai plus qu’à faire une requête pour chaque post et l’enregistrer dans un dossier (tout ça paramétrable grâce à la cli). J’ai par la suite rajouté une option pour télécharger les fichiers spéciaux comme _readme.md et _styles.css.

Finalement, sortir la 0.0.1 m’a pris tout pile 1 h (sans l’option pour télécharger les fichiers spéciaux), c’était vraiment sympa (et facile) à faire et j’espère que ça me sera (rien qu’un peu) utile, parce que finalement faire ça, même si ça a été rapide, ça a été toujours plus long que télécharger à la main mes 2 posts, voire juste les réécrire à la main.